/*
题目描述
编写一个函数alloc(n)，用来在内存区新开辟一个连续的空间（n个字节）。
此函数的返回值是一个指针，指向新开辟的连续空间的起始地址。
再写一个函数free(p)，将地址p开始的各单元释放（不能再被程序使用，除非再度开辟）。
大致实现方法如下：
首先在内存区域中确定出一片相当大的连续空间（例如1000字节或更多）。
然后开辟与释放操作都在此空间内进行。
假设指针变量p原本已经指向未用空间的开头，调用alloc(n)之后，开辟了n个字节可供程序使用（例如，可以赋值到这些单元中）。
现在需要使p的值变成p+n，表示空白未用的区域从p+n地址开始，同时要将新开辟的区域的起始位置p作为函数值返回，以表示可以利用从此点开始的单元。
如果要新开辟的区域太大，超过了预设的空间，则alloc(n)函数应当返回指针NULL，表示开辟内存失败。
alloc(n)应返回一个指向字符型数据的指针（因为开辟的区间是以字节为单位被利用的）。

输入
第一行包含两个用空格隔开的正整数m和n。m表示初始时内存区域中的连续空间大小（单位为字节），n表示之后有n个alloc函数的调用。保证m<=10000，n<=100。
第二行包含n个用空格隔开的正整数，按顺序表示每一次alloc函数调用时传入的参数。

输出
在一行内输出n个整数，在每一个整数后输出一个空格。这些整数表示每一次alloc函数调用之后返回值的10进制表示。
在本题中，假设NULL指针的10进制整数表示为0，初始时连续空间的开始指针的10进制表示为1。
请注意行尾输出换行。
*/
// #include <stdio.h>

// // 分配内存函数
// void *alloc(int byte) {
//     void *p = char[byte];
//     return p;
// }

// int main()
// {
//     printf("%p", alloc(1024));
//     printf("%p", alloc(1024));
// }
// 你他妈当我是神仙，手搓malloc。哪来的野题。